#ifndef SUPERHEADER_H
#define SUPERHEADER_H

#include <stdexcept>
#include <sstream>
#include <exception>
#include <iostream>
#include <math.h>

#include <QString>
#include <QDebug>

using namespace std;

// количество потоков, каналов и узлов в сети
const int countStreams  = 14;
const int countChannels = 11;
const int countHubs     = 12;

// Возбуждение исключительной ситуации
inline void error(const QString& str) {
  throw runtime_error(str.toStdString());
}

inline void error(const QString &str, const QString &str2) {
  error(str + str2);
}

// генерация случайного числа
// постусловие: случайное число должно лежать на отрезке [0, 1]
inline double ran() {
  double res = (double)rand()/INT_MAX;

  if ( res > 1.0 || res < 0.0)
    error("random: случайное число выходит за пределы отрезка [0, 1].");

  return res;
}

// натуральный логарифм
inline double ln(double num) {
  return log(num);
}

#endif
